Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

268
Views
Equivalente de Kotlin para la palabra clave "with" en C# (clase de datos)

En C# hay un tipo de clase que se llama "registro" que es más o menos lo mismo que una clase de "datos" en Kotlin.

Al usar un registro en C#, puede usar la palabra clave "con" para crear una nueva instancia de su registro con algunas propiedades establecidas en valores específicos (consulte https://docs.microsoft.com/en-us/dotnet/csharp/ referencia-idioma/operadores/con-expresión )

Me preguntaba si hay una forma similar de hacerlo en kotlin. No puedo encontrar nada con respecto a eso, y la forma en que lo hago por ahora es definiendo la función que hace el trabajo, pero a veces puede ser un poco repetitivo, y se supone que usar la clase de datos me evita ese trabajo repetitivo.

También preferiría evitar el uso de propiedades "var" (para tener instancias inmutables), de ahí mi pregunta.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Kotlin tiene clases de datos, que están cerca de los registros de C#. Como puede ver en la documentación de Kotlin:

No es inusual crear clases cuyo objetivo principal es almacenar datos. En tales clases, algunas funciones estándar y algunas funciones de utilidad a menudo se derivan mecánicamente de los datos. En Kotlin, se denominan clases de datos y se marcan con datos:

data class User(val name: String, val age: Int)

El compilador deriva automáticamente los siguientes miembros de todas las propiedades declaradas en el constructor principal:

 equals()/ hashCode() pair toString() of the form "User(name=John, age=42)" componentN() functions corresponding to the properties in their order of declaration. copy() function (see below).

La última línea muestra que el compilador genera automáticamente una función de copy para una clase de datos, y esto es lo que está buscando

Nuevamente de la documentación, el uso sería:

Utilice la función copy() para copiar un objeto, lo que le permite modificar algunas de sus propiedades y mantener el resto sin cambios. [...] A continuación, puede escribir lo siguiente:

 val jack = User(name = "Jack", age = 1) val olderJack = jack.copy(age = 2)
over 4 years ago · Santiago Trujillo Report

0

Con una clase de datos, puede usar el método de copy :

 val someData = SomeClass(a = 1, b = 2) val modifiedData = someData.copy(b = 0) // modifiedData = SomeClass(a = 1, b = 0)

Consulte la documentación oficial de la clase de datos.

over 4 years ago · Santiago Trujillo Report

0

¿Quiere decir algo como la función copy() que se genera automáticamente para las clases de datos?

 fun main() { val foo1 = Foo("foo", 5) val foo2 = foo1.copy(value1 = "bar") val foo3 = foo2.copy(value2 = 10) } data class Foo( val value1: String, val value2: Int, )
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!